package com.zp.self.module.level_4_算法练习.数学.数学推理;

/**
 * @author By ZengPeng
 */
public class 力扣_492_构造矩形 {
    //测试
    public static void main(String[] args) {


        int[] ints = new 力扣_492_构造矩形().constructRectangle(4);
        for (int anInt : ints) {
            System.out.print(anInt+",");
        }
        System.out.println();
        ints= new 力扣_492_构造矩形().constructRectangle(37);
        for (int anInt : ints) {
            System.out.print(anInt+",");
        }
        ints=new 力扣_492_构造矩形().constructRectangle(122122);
        for (int anInt : ints) {
            System.out.print(anInt+",");
        }
    }

    /**
     * 题目：作为一位web开发者， 懂得怎样去规划一个页面的尺寸是很重要的。
     * 所以，现给定一个具体的矩形页面面积，你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。
     * 要求：
     * 你设计的矩形页面必须等于给定的目标面积。
     * 宽度 W 不应大于长度 L ，换言之，要求 L >= W 。
     * 长度 L 和宽度 W 之间的差距应当尽可能小。
     * 返回一个 数组 [L, W]，其中 L 和 W 是你按照顺序设计的网页的长度和宽度。
     *
     * 示例1：
     * 输入: 4
     * 输出: [2, 2]
     * 解释: 目标面积是 4， 所有可能的构造方案有 [1,4], [2,2], [4,1]。
     * 但是根据要求2，[1,4] 不符合要求; 根据要求3，[2,2] 比 [4,1] 更能符合要求. 所以输出长度 L 为 2， 宽度 W 为 2。
     *
     * 示例 2:
     * 输入: area = 37
     * 输出: [37,1]
     *
     * 分析：【perfect】
     *      1.找到平方根，像下遍历
     *
     * 边界值 & 注意点：
     *      1.
     **/
    public int[] constructRectangle(int area) {
        int right =(int) Math.sqrt(area)+1;
        for (int i = right; i >1; i--) {
            if(area%i==0)
                return  new int[]{Math.max(i,area/i),Math.min(i,area/i)};
        }
        return  new int[]{area,1};
    }
}
